<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>单例模式</title>
</head>
<body>
    <script>
        // 类 ：抽象一个东西 用来实例化
        // 只能实例化一次？
        function Singleton(name){
            this.name=name;
            this.instance = null;
        }
        Singleton.prototype.say=function(){
            console.log('Singleton')
        }
        // Singleton 当成对象使用 静态方法
        Singleton.getInstance=function (name){
            // console.log("返回单例对象");
            // 如何返回一个实例，
            // 如果已经有了这个实例，则返回这个实例
            // 缓存 实例
            if(this.instance==null){   // 之前已经实例化了
                return this.instance=new Singleton(name);
            }
            else{
                return this.instance;
            }
        }

        // 如果只想实例化一次 不能用new


        let xx = new Singleton('liutisn');
        xx.say();  // 实例方法
        let yy=Singleton.getInstance('liutisn');   //对象方法
        let zz=Singleton.getInstance('tiantong');   //对象方法

        console.log(yy.name,zz.name);

        // let yy = new Singleton('xiexie');
        // console.log(xx instanceof Singleton);
        // console.log(xx.__proto__.constructor == Singleton);
    </script>
</body>
</html>